home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 42 / Amiga Format AFCD42 (Issue 126, Aug 1999).iso / -serious- / programming / other / ioblixdevkit / c / include / ioblix / parport.h < prev    next >
C/C++ Source or Header  |  1999-05-14  |  4KB  |  106 lines

  1. /*
  2. **      $VER: ioblix/parport.h 37.3 (7.4.99)
  3. **
  4. **      include file for access to IOBlix parallel ports
  5. **
  6. **      (C) Copyright 1998,1999 Thore Böckelmann
  7. **      All Rights Reserved.
  8. */
  9.  
  10. #ifndef IOBLIX_PARPORT_H
  11. #define IOBLIX_PARPORT_H 1
  12.  
  13. #define PARPORT_DATA        0
  14. #define PARPORT_ECP_AFIFO   0
  15. #define PARPORT_STATUS      1
  16. #define PARPORT_CONTROL     2
  17. #define PARPORT_EPP_APORT   3
  18. #define PARPORT_EPP_DPORT1  4
  19. #define PARPORT_EPP_DPORT2  5
  20. #define PARPORT_EPP_DPORT3  6
  21. #define PARPORT_EPP_DPORT4  7
  22. #define PARPORT_CONFIG_A    8
  23. #define PARPORT_CFIFO       8
  24. #define PARPORT_TFIFO       8
  25. #define PARPORT_ECP_DFIFO   8
  26. #define PARPORT_CONFIG_B    9
  27. #define PARPORT_ECONTROL    10
  28. #define PARPORT_REG_COUNT   11
  29.  
  30. /*
  31.     The old static structures are now obsolete now and have been completely erased.
  32.     These new definitions allow a much more hardware independent way to access different,
  33.     but very similar chips (ie serial UARTs 16C650 and 16C654, which have the same registers,
  34.     but at different addresses.
  35. */
  36.  
  37. struct ParPortRegisters {
  38.     ULONG pr_RegCount;
  39.     volatile UBYTE *pr_Regs[PARPORT_REG_COUNT];
  40. };
  41.  
  42. #define pr_data         pr_Regs[PARPORT_DATA]
  43. #define pr_ecp_afifo    pr_Regs[PARPORT_ECP_AFIFO]
  44. #define pr_status       pr_Regs[PARPORT_STATUS]
  45. #define pr_control      pr_Regs[PARPORT_CONTROL]
  46. #define pr_epp_aport    pr_Regs[PARPORT_EPP_APORT]
  47. #define pr_epp_dport1   pr_Regs[PARPORT_EPP_DPORT1]
  48. #define pr_epp_dport2   pr_Regs[PARPORT_EPP_DPORT2]
  49. #define pr_epp_dport3   pr_Regs[PARPORT_EPP_DPORT3]
  50. #define pr_epp_dport4   pr_Regs[PARPORT_EPP_DPORT4]
  51. #define pr_config_a     pr_Regs[PARPORT_CONFIG_A]
  52. #define pr_cfifo        pr_Regs[PARPORT_CFIFO]
  53. #define pr_tfifo        pr_Regs[PARPORT_TFIFO]
  54. #define pr_ecp_dfifo    pr_Regs[PARPORT_ECP_DFIFO]
  55. #define pr_config_b     pr_Regs[PARPORT_CONFIG_B]
  56. #define pr_econtrol     pr_Regs[PARPORT_ECONTROL]
  57.  
  58. /* ParPort.control */
  59. #define PARPORT_CONTROL_STROBE      0x01
  60. #define PARPORT_CONTROL_AUTOFD      0x02
  61. #define PARPORT_CONTROL_INIT        0x04
  62. #define PARPORT_CONTROL_SELECT      0x08
  63. #define PARPORT_CONTROL_ACKINT      0x10
  64. #define PARPORT_CONTROL_DIRECTION   0x20
  65.  
  66. /* ParPort.status */
  67. #define PARPORT_STATUS_EPP_TIMEOUT  0x01
  68. #define PARPORT_STATUS_ERROR        0x08
  69. #define PARPORT_STATUS_SELECT       0x10
  70. #define PARPORT_STATUS_PAPEROUT     0x20
  71. #define PARPORT_STATUS_ACK          0x40
  72. #define PARPORT_STATUS_BUSY         0x80
  73.  
  74. /* ParPort.econtrol */
  75. #define PARPORT_ECONTROL_FAULT      0x10
  76. #define PARPORT_ECONTROL_DMA        0x08
  77. #define PARPORT_ECONTROL_INT        0x04
  78. #define PARPORT_ECONTROL_FIFO_F     0x02
  79. #define PARPORT_ECONTROL_FIFO_E     0x01
  80. #define PARPORT_ECONTROL_SPP        0x00
  81. #define PARPORT_ECONTROL_PS2        0x20
  82. #define PARPORT_ECONTROL_PPF        0x40
  83. #define PARPORT_ECONTROL_ECP        0x60
  84. #define PARPORT_ECONTROL_EPP        0x80
  85. #define PARPORT_ECONTROL_TST        0xc0
  86. #define PARPORT_ECONTROL_CFG        0xe0
  87. #define PARPORT_ECONTROL_MODE_MASK  0xe0
  88.  
  89.  
  90. /* structure returned by AllocECPInfo() */
  91. /* all fields are READ-ONLY             */
  92.  
  93. struct ECPProbeInformation {
  94.     BOOL epi_IsIEEE1284Compatible;      /* device is IEEE1284 compatible?   */
  95.     UBYTE epi_Pad0;
  96.     UBYTE *epi_FullInformation;         /* complete information string      */
  97.     UBYTE *epi_Manufacturer;            /* device manufacturer              */
  98.     UBYTE *epi_Model;                   /* device model                     */
  99.     UBYTE *epi_Class;                   /* device class                     */
  100.     UBYTE *epi_CommandSet;              /* supported command sets           */
  101.     UBYTE *epi_Description;             /* device description               */
  102. };
  103.  
  104. #endif /* IOBLIX_PARPORT_H */
  105.  
  106.